Cloud-enabled network-based digital video recorder

ABSTRACT

This disclosure describes systems and methods related to a cloud-enabled network-based digital video recorder. In some embodiments, a request to record an asset may be received from a client device. An asset record associated with the request may be created. A first record event for generation of a manifest file may be created. A second record event for entitlement validation of an asset may be created. A third record event for quality control for the asset may be created based at least in part on the asset record. A manifest file associated with the asset may be generated based at least in part on the asset record.

RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.13/801,093, entitled “Cloud-Enabled Network-Based Digital VideoRecorder,” filed on Mar. 13, 2013, which claims priority to U.S.Provisional Patent Application No. 61/765,344, entitled “Cloud-EnabledNetwork-Based Digital Video Recorder,” filed on Feb. 15, 2013, thecontents of both applications being incorporated by reference herein intheir entirety.

TECHNICAL FIELD

Aspects of the disclosure relate generally to digital video recorderfunctionality, and more particularly, to cloud-enabled network-baseddigital video recording.

BACKGROUND

Broadband service providers, such as cable service providers andsatellite service providers, typically communicate broadband signalsand/or other signals to customers in order to provide a wide variety ofservices, such as television service, telephone service, Internetservice, etc. In conventional systems, a signal is communicated from aservice provider to a set-top box (STB) situated within a customer'shousehold. The signal is then processed by the STB in order to formatdata for presentation to the customer. Additionally, many conventionalsystems utilize digital video recorders (DVRs) to facilitate therecording of broadband content at the customer's direction. ConventionalDVRs are typically situated within the customer's household.

BRIEF DESCRIPTION OF THE DRAWINGS

The detailed description is set forth with reference to the accompanyingfigures. In the figures, the left-most digit(s) of a reference numberidentifies the figure in which the reference number first appears. Theuse of the same reference numbers in different figures indicates similaror identical items.

FIG. 1 is a block diagram of a system for cloud-enabled network-baseddigital video recording (nDVR), in accordance with an embodiment of thedisclosure.

FIG. 2 is a flow diagram of a method for pausing and recording livecontent in an nDVR system, in accordance with an embodiment of thedisclosure.

FIG. 3 is a flow diagram of a method for scheduling a recording in annDVR system, in accordance with an embodiment of the disclosure.

FIG. 4 is a flow diagram of a method for generating a manifest file forplayback in an nDVR system, in accordance with an embodiment of thedisclosure.

FIG. 5 is a flow diagram of a method for entitlement validation of acontent asset in an nDVR system, in accordance with an embodiment of thedisclosure.

FIG. 6 is a flow diagram of a method for write-level optimization in annDVR system, in accordance with an embodiment of the disclosure.

FIG. 7 is a flow diagram of a method for quality control checks in annDVR system, in accordance with an embodiment of the disclosure.

FIG. 8 is a flow diagram of a method for bookmarking and metering assetsin an nDVR system, in accordance with an embodiment of the disclosure.

FIG. 9 is a block diagram of a system for providing nDVR services to alegacy system, in accordance with an embodiment of the disclosure.

FIG. 10 is a flow diagram of a method for providing nDVR services to alegacy system, in accordance with an embodiment of the disclosure.

Certain implementations will now be described more fully below withreference to the accompanying drawings, in which various implementationsand/or aspects are shown. However, various aspects may be implemented inmany different forms and should not be construed as limited to theimplementations set forth herein; rather, these implementations areprovided so that this disclosure will be thorough and complete, and willfully convey the scope of the disclosure to those skilled in the art.Like numbers refer to like elements throughout.

DETAILED DESCRIPTION

Embodiments of the disclosure are described more fully hereinafter withreference to the accompanying drawings in which embodiments of thedisclosure are shown. This invention may, however, be embodied in manydifferent forms and should not be construed as limited to theembodiments set forth herein; rather, these embodiments are provided sothat this disclosure will be thorough and complete, and will fullyconvey the scope of the invention to those skilled in the art. Likenumbers refer to like elements throughout.

Embodiments of the disclosure may include systems and methods forestablishing a cloud-enabled network-based digital video recording(nDVR) platform. In some embodiments, an nDVR system may includemultiple systems working together to provide DVR services. For example,in some embodiments, an nDVR system may be associated with an adaptivebit-rate (ABR) live-video distribution system. The ABR live-videodistribution system may include, but is not limited to, a contentacquisition chain, a content distribution network, a curated contentexperience platform, and one or more client devices. The nDVR system mayalso include cloud storage. The cloud storage may comprise one or morestorage arrays and one or more nDVR servers. The nDVR system may processtransport streams of live content, wherein the processing may includeencoding, transcoding, and rate-shaping of transport streams.

The nDVR system may provide the ability to dynamically adjust a quotasystem associated with a user account. For example, if a user is closeto going over his or her given quota, rather than cancelling scheduledrecordings or requiring immediate deletion of content assets, a user maybe able to upgrade his or her user account in order to increase theuser's quota. Additionally, the nDVR system may enable users todesignate sub-users associated with a main account and enable differentlevels of functionality, permission, and/or quota for each account. Thissystem gives users more flexibility in permitting different members of ahousehold to access different content or functionality of the systembased on their different sub-accounts.

The nDVR system further enables users to schedule the recording ofcontent. In some embodiments, scheduling content assets may includegenerating manifest files, scheduling entitlement validations, andscheduling quality control checks. The use of manifest files foradaptive bit-rate streaming of recorded content enables users to receiveoptimal content for their client devices, whether it is a smartphone ora large television, and taking their current network conditions intoconsideration.

The nDVR system may also utilize a deterministic naming scheme toincrease the efficiency of the system. For example, the names of mediasegments may be based on multiple factors, which may include a contentasset identifier, a source identifier, an indication of time, and thelike. Because the names of the media segments are predictable, the nDVRsystem may create a manifest file independent of recording the requestedcontent asset, thus decreasing processing that may be normally requiredat the time of recording the asset. In some embodiments, the nDVR systemmay also enable digital rights management technology.

The nDVR system may also utilize a file-level storage optimization thatpermits the system to reduce the number of write-cycles on the disk(e.g., extends life of the platter), which may enable the creation of anincreased number of files given a specific write-cache (e.g., increasessystem throughput, especially write-side), and may provide storageoptimizations in the system.

Additionally, the nDVR system may also provide the ability of legacysystems to receive cloud-enabled network-based DVR services. In someembodiments, a server-based virtual client may retrieve the appropriatebit-rate segments, decrypt, and stream out transport streams to a systemsuch as some components of the legacy video-on-demand (VoD) platform. Insome embodiments, the server-based virtual client may convert the streamto the format needed for the legacy devices (e.g., decryption,concatenation) and stream it to the legacy device.

FIG. 1 is a block diagram of a system 100 for facilitating acloud-enabled network-based digital video recording (nDVR) system 100and the delivery of content through the nDVR system 100, in accordancewith an embodiment of the disclosure. In brief overview, a contentacquisition chain (CAC) 102 may communicate with a content distributionnetwork (CDN) 104. The nDVR storage array 106 may communicate with theCDN 104. One or more client devices 110 may communicate over one or morenetworks 108 with the nDVR server 112, nDVR storage array 106, and/orthe CDN 104. The nDVR server 112 may communicate with a curated contentexperience platform (CCEP) 114.

The CAC 102 may communicate with the CDN 104. The CAC 102 may compriseone or more computing devices that provide content streaming, real-timeand/or non-real-time content delivery, the delivery of stored and/orrecorded content, or the like. Additionally, the CAC 102 may acquire andtranscode content, segment the received content (e.g., adaptive bit-ratetechnology), and/or protect and encrypt the content. The CDN 104 mayinclude one or more edge servers, one or more routers and/or bridges,one or more data center servers, one or more content databases, and/orone or more content servers. The various elements of the CDN 104 maycooperate to receive content from the CAC 102 and appropriately cachethe content and/or transmit the content to a destination, such as thenDVR storage array 106 for access by one or more client devices 110.

The CDN 104 may be in communication with one or more nDVR storage arrays106. The nDVR storage array 106 may store records associated with useraccounts and any content assets that may be associated with the useraccounts. The nDVR storage array 106 may be paired with an edge serverof the CDN 104. In some embodiments, the nDVR storage array 106 may bemanaged as part of the CDN 104 or may be considered a separate componentof the nDVR system 100.

The nDVR storage array 106 may be located between the edge of the CDN104 and target markets (e.g., client devices 110). In some embodiments,one or more nDVR storage arrays 106 may be placed with the CDN 104,minimizing impact to the network transport. The one or more nDVR storagearrays 106 may retrieve content from the CDN 104.

In some embodiments, the nDVR storage array 106 may support a storageoptimization below the file level. The nDVR storage array 106 may copy afile from a location on the CDN 104 to a list of target locations.Because the nDVR storage array 106 knows that all of the source filesare identical, the nDVR storage array 106 may optimize the write-cache,saving not only disk space, but also improving the performance of thenDVR storage array 106. Further details for storage optimization belowthe file level are discussed below in relation to FIG. 6.

One or more client devices 110 may communicate over one or more networks108 with the nDVR server 112, nDVR storage array 106, and/or the CDN104. Suitable client devices 110 may include, but are not limited to, aset top-box (STB) 110A, smartphones 110B, laptop computers 110C,tablets, electronic book reading devices, processor-based devices, orthe like.

The client device 110 may communicate with the nDVR server 112, the nDVRstorage array 106, and/or the CDN 104 over one or more types of networks108, such as a wireless fidelity (Wi-Fi) network, a Wi-Fi Directnetwork, Bluetooth®, a radio network, a cellular network (e.g., thirdgeneration or fourth generation), a satellite network, a cable network,a landline-based network, the Internet, intranets, a telephone network,a television network, data networks, or other communication mediumsconnecting multiple computing devices to one another, as non-limitingexamples.

The client device 110 may comprise one or more processors 152, one ormore memories 160, data storage 154, one or more input/output (I/O)interfaces 156, and one or more communication interfaces 158. The one ormore processors 152 may individually comprise one or more cores and maybe configured to access and execute, at least in part, instructionsstored in the one or more memories 160. The one or more memories 160comprise one or more computer-readable storage media (CRSM). The one ormore memories 160 may include, but are not limited to, random accessmemory (RAM), flash RAM, magnetic media, optical media, and so forth.The one or more memories 160 may be volatile in that information isretained while providing power or non-volatile in that information isretained without providing power.

The client device 110 may further include additional data storage 154such as removable storage and/or non-removable storage including, butnot limited to, magnetic storage, optical disk storage, and/or tapestorage. Data storage 154 may provide non-volatile storage ofcomputer-executable instructions and other data. The memory 160 and/orthe data storage 154, removable and/or non-removable, are examples ofCRSM.

The one or more I/O interfaces 156 may also be provided in the clientdevice 110. These I/O interfaces 156 allow for coupling devices, such askeyboards, joysticks, touch sensors, cameras, microphones, speakers,haptic output devices, memories, and so forth, to the client device 110.

The one or more communication interfaces 158 provide for the transfer ofdata between the client device 110 and another device directly, via anetwork, or both. The communication interfaces 158 may include, but arenot limited to, personal area networks (PANs), wired local area networks(LANs), wireless local area networks (WLANs), wireless wide areanetworks (WWANs), and so forth. The communication interfaces 158 mayutilize acoustic, radio frequency, optical, or other signals to exchangedata between the client device 110 and another device such as an accesspoint, a host computer, a router, an e-reader device, another clientdevice 110, and the like.

The one or more memories 160 may store instructions for execution by theprocessor 152 to perform certain actions or functions. Theseinstructions may include an operating system (OS) 162 configured tomanage hardware resources, such as the I/O interfaces 156, and providevarious services to applications executing on the processor 152. The oneor more memories 160 may also store data files 164 containinginformation about the operating system 162.

An nDVR client 166 may be stored in the one or more memories 160. ThenDVR client 166 may receive or access information associated with annDVR system 100. In some embodiments, the nDVR client 166 maycommunicate over one or more networks 108 with an nDVR server 112 or annDVR storage array 106.

The live client 168 may be stored in the one or more memories 160. Thelive client 168 may receive information collected or generated by thenDVR client 166. In some embodiments, the live client 168 may be incommunication over one or more networks 108 with the CDN 104.

Within the one or more memories 160, one or more modules may be stored.As used herein, the term module designates a functional collection ofinstructions that may be executed by the one or more processors 152. Forconvenience in description, and not by way of limitation, separatemodules are described. However, it is understood that in someimplementations the various functions provided by the modules may bemerged, separated, and so forth. Furthermore, the modules mayintercommunicate or otherwise interact with one another, such that theconditions of one affect the operation of another.

The nDVR server 112 may communicate with the nDVR storage array 106 tocreate user records and/or directories, create asset records and/ordirectories, create and store manifest files, place entries in the nDVRstorage array 106 for each segment time period to be recorded and/orstored, change the state of the asset (e.g., change the state associatedwith the asset record to “recording” after receiving the first mediasegment, change the state associated with the asset record to “recorded”after receiving the last media segment for the content asset), calculateasset-specific quota data, associate entitlement checking data, and/orschedule and perform quality control for content assets. The nDVR server112 may also comprise record events for functionality associated withthe nDVR system 100, such as scheduling recordings, quality controlchecks, entitlement checks, validation checks, and the like.

The one or more nDVR servers 112 may comprise one or more processors172, one or more memories 180, data storage 174, one or moreinput/output (I/O) interfaces 176, and one or more communicationinterfaces 178. The one or more processors 172 may individually compriseone or more cores and may be configured to access and execute, at leastin part, instructions stored in the one or more memories 180. The one ormore memories 180 comprise one or more CRSM. The one or more memories180 may include, but are not limited to, RAM, flash RAM, magnetic media,optical media, and so forth. The one or more memories 180 may bevolatile in that information is retained while providing power ornon-volatile in that information is retained without providing power.

The nDVR server 112 may further include additional data storage 174 suchas removable storage and/or non-removable storage including, but notlimited to, magnetic storage, optical disk storage, and/or tape storage.Data storage 174 may provide non-volatile storage of computer-executableinstructions and other data. The memory 180 and/or the data storage 174,removable and/or non-removable, are examples of CRSM.

The one or more I/O interfaces 176 may also be provided in the nDVRserver 112. These I/O interfaces 176 allow for coupling devices, such askeyboards, joysticks, touch sensors, cameras, microphones, speakers,haptic output devices, memories, and so forth, to the nDVR server 112.

The one or more communication interfaces 178 provide for the transfer ofdata between the nDVR server 112 and another device directly, via anetwork, or both. The communication interfaces 178 may include, but arenot limited to, PANs, LANs, WLANs, WWANs, and so forth. Thecommunication interfaces 178 may utilize acoustic, radio frequency,optical, or other signals to exchange data between the nDVR server 112and another device such as a client device 110, another nDVR server 112,an nDVR storage array 106, or the like.

The one or more memories 180 may store instructions for execution by theprocessor 172 to perform certain actions or functions. Theseinstructions may include an operating system (OS) 182 configured tomanage hardware resources, such as the I/O interfaces 176, and providevarious services to applications executing on the processor 172. The oneor more memories 180 may also store data files 184 containinginformation about the operating system 182.

An nDVR application 186 may be stored in the one or more memories 180.The nDVR application 186 may receive requests from one or more clientdevices 110, schedule recordings, perform validation checks, performquality control checks, and other nDVR functionality. In someembodiments, the nDVR application 186 may communicate over one or morenetworks 108 with an nDVR storage array 106, one or more client devices110, or other devices in the nDVR system 100.

The adaptive bit-rate (ABR) application 188 may be stored in the one ormore memories 180. The ABR application 188 may receive informationassociated with the network connection quality and/or the client device110 to determine an adaptive bit-rate associated with the client device110. The ABR application 188 may determine an optimal set of bit-ratesassociated with a particular device class associated with the clientdevice 110 based at least in part on the information associated with theclient device 110, the information associated with the networkconnection quality of the client device 110, the received request fromthe client device 110, and/or a user account profile associated with theclient device 110.

Within the one or more memories 180, one or more modules may be stored.As used herein, the term module designates a functional collection ofinstructions that may be executed by the one or more processors 172. Forconvenience in description, and not by way of limitation, separatemodules are described. However, it is understood that in someimplementations the various functions provided by the modules may bemerged, separated, and so forth. Furthermore, the modules mayintercommunicate or otherwise interact with one another, such that theconditions of one affect the operation of another.

The nDVR server 112 may be in communication with a curated contentexperience platform (CCEP) 114. The CCEP 114 may provide guide data(e.g., linear video metadata management), application interface servers(e.g., API servers or “app servers” for linear and on-demand services),and/or a content and service protection platform (e.g., a combination ofprivacy, network security, conditional access, and content protection ofdigital rights components).

In some embodiments, the nDVR system 100 may be associated with an ABRlive-video distribution system. The ABR live-video distribution systemmay comprise a CAC 102, a CDN 104, a CCEP 114, and one or more clientdevices 110. The nDVR cloud storage may comprise one or more nDVRstorage arrays 106 and one or more nDVR servers 112. The nDVR cloudstorage may process transport streams of live content, wherein theprocessing may include encoding, transcoding, and rate-shaping oftransport streams.

In some embodiments, the nDVR server 112 may manage source data, whichmay describe where the source is located, and any information that maybe requested by a user in association with the content asset (e.g.,rating information for the content asset, duration of the asset, datethe content asset was recorded, and the like). For example, in someembodiments, the nDVR server 112 may store the “current” segmentduration for each source (e.g., CDN 104 server). In some embodiments,other characteristics may also be stored in association with the contentasset. The nDVR server 112 may store information indicating whether thesegment should be stored in a manner so that each user receives a copyof the segment or if a segment may be shared by multiple users (e.g.,utilizing the write-level optimization discussed in relation to FIG. 6).

In some embodiments, the nDVR client 166 may generate and transmit arequest to the nDVR application 186 for a list of content assetsassociated with the user account associated with the client device 110.The nDVR application 186 may retrieve or otherwise obtain informationfrom one or more nDVR storage arrays 106 and generate a list of allassets associated with the user account and metadata associated with thecontent assets. For example, the metadata may include, but is notlimited to, availability of the content asset, quota informationassociated with the content asset, or the like. In some embodiments, thelist of all of the content assets associated with a user account,recording state, and quota information may be compiled and transmittedto the nDVR client 166 of a client device 110.

In some embodiments, a user account may be a multi-user account, whereinmultiple users may be associated with each other. For example, ahousehold may include multiple people, where each person has a useraccount. In some embodiments, one of the user accounts of the householdmay be designated as the main account holder. The main account holdermay have the ability to designate account-level and user-level content.The main account holder may designate different levels of permission fordifferent user accounts. In one example, the main account holder maydesignate user accounts associated with users under the age of 18 aschildren's accounts and those user accounts associated with users 18 andover as adult accounts. The main account holder may then designate theavailability of the recorded content on an account level (e.g., adultsmay have access to all recorded content; children may have access tocontent rated PG-13). In some embodiments, content-specific andfeature-specific controls may be enabled. For example, a parent may“unlock” an asset for a given account sub-user independent of theprogram's metadata.

In some embodiments, the nDVR system 100 may provide the ability todynamically adjust a quota system associated with a user account. A usermay have a subscription that includes a pre-determined storage quota forcontent. If the user is close to going over his or her given quota,rather than cancelling scheduled recordings or requiring immediatedeletion of content assets, a user may be able to upgrade his or heruser account in order to increase the user's quota. In some embodiments,if the user is close to going over his or her given quota, anotification may be generated and transmitted to the user. Thenotification may be a text message, email message, phone call, or othertype of notification. In some embodiments, the notification may includemultiple upgrade options to increase the user's quota.

In some embodiments, the nDVR system may enable users to designatesub-users associated with a main account and assign different quotas foreach sub-user. In some embodiments, the main user may receivenotifications when the associated user is close to a pre-determinedthreshold. For example, an notification may be generated when the quotareaches 75% of its capacity. In some embodiments, the threshold isdetermined by the administrator. In some embodiments, the threshold maybe designated by the main user associated with the account.

In some embodiments, priority-setting rules for deletion of content andco-existence of multiple quota management systems may be enabled. Insome embodiments, content assets may be deleted by the date the contentasset was recorded, the size of the content asset, the rating associatedwith the content asset, the sub-user who requested the recording of thecontent asset, and other metadata associated with the content asset. Insome embodiments, if users had different quotas for different contentproviders, content may be shared across both but only counted towardsone of the given quotas.

In some embodiments, content assets may be modified at a certain levelby a user, such as the removal of content (e.g., advertisements) orremoval of recording pre-roll content (e.g., content recorded prior to adesired show). In some embodiments, the nDVR server 112 may enable usersto “remove” content from the recording on a segment-by-segment basis. Insome embodiments, the nDVR server 112 may permit the user to fine-tuneand/or remove content within a segment. Customizations to recordings maybe shared between users as asset-specific templates and may be appliedby other users to their copies of that asset.

In some embodiments, the nDVR application 186 may permit the user torequest a re-creation or re-generation of a manifest file. This may beinitiated by the nDVR client 166 if problems are detected, or to undochanges made to the manifest file. In some embodiments, this feature mayincorporate the quality control and content replacement processes asneeded.

In some embodiments, some content (e.g., advertisements) may be replacedin recorded content with different content (e.g., targetedadvertisements). In some embodiments, whole-segment boundaries may bereplaced by replacing the entries for the segments in the manifest filewith new entries (e.g., URIs) pointing to the new content segments. Theinjection of new content may be performed after the manifest file hasbeen created. The replacement content may use a single copy of thetransport stream files even when individual versions of the assettransport stream files are created. After the replacement content hasbeen played by the user, the nDVR application 186 may automaticallyreplace the replacement content with different replacement content orremove the identified content (e.g., advertisements) from the recordedcontent asset.

In some embodiments, the nDVR application 186 may enable users to editor fine tune a content asset which may result in the creation of atemplate or “recipe file” (different than the manifest file) that may beapplied to content assets recorded by a different user. The template orrecipe file would not have URIs. Instead, the template or recipe filemay comprise information independent of the video profile, such asinformation about the source and the segment time such that the deletionof that segment could be recreated by the client device 110 of adifferent user. In some embodiments, the nDVR application 186 may enableusers to create “modified” segments that actually remove portions of thesegment for finer-control of editing. The original segments may bestored in association with the modified segments. The modification tothe content asset may be reflected in the manifest file or a templateassociated with the user account.

In some embodiments, the recipe file may instruct a client device 110 tocreate new segments based upon the information in the template or recipefile for a particular time segment or media segment. The nDVR server 112may create and modify the templates responsive to information receivedfrom client devices 110 and store them in association with theappropriate client accounts in the nDVR storage array 106. In someembodiments, the template may be shared over one or more socialnetworking tools. When a user shares a template or recipe file with asecond user, the second user will have a copy of the recipe file storedin association with their account in the nDVR storage array 106.

In some embodiments, the nDVR application 186 may enable users to create“modified” segments that remove portions of the segment for finercontrol of editing. The original segments are stored in association withthe modified segments.

In some embodiments, a process associated with the nDVR application 186may manage asset metadata. Asset metadata may describe the asset and anyinformation associated with the asset that may be needed by the clientdevice 110. Asset metadata may include but is not limited to ratinginformation for various time-periods covered by the asset. This mayremove dependencies on external systems for the metadata and may be usedas the primary or backup location of metadata associated with thecontent asset. The nDVR server 112 may generate an asset metadata fileand store the file in the nDVR storage array 106 in association with thecontent asset. The nDVR server 112 may transmit the asset metadata fileto a client device 110 responsive to a request from the client device110 for metadata for a content asset. The client device 110 may presentthe metadata, which may include extended information associated with thecontent asset. In some embodiments, the metadata may augment guide datareceived in association with the content asset. In some embodiments, themetadata may be used in lieu of the guide data associated with thecontent asset.

In some embodiments, the nDVR system 100 may include an nDVR guideserver (not pictured). A process executing on the nDVR guide server maygenerate and maintain records, which may be primarily organized aroundcontent asset series and/or users wishing to record events from thecontent asset series that may include criteria and historicalinformation associated with the content asset series. The nDVR guideserver may communicate with the nDVR server 112 to permit users toidentify and edit their scheduled recordings of episodes viewed andepisodes previously recorded. In some embodiments, the level of interestfor specific episodes may also be identified and modified (e.g.,priority of recording).

The nDVR guide server may scan the nDVR server 112 and/or other entityin the nDVR system 110 to monitor series recording information andmonitor the guide data for any changes. If the nDVR guide serveridentifies any changes in the guide data, the nDVR guide server maycommunicate with the nDVR server 112. Responsive to the communicationfrom the nDVR guide server, the nDVR server 112 may scan any scheduledrecordings associated with the content asset series. If the nDVR server112 identifies any scheduled recordings that may be affected by thechange in guide date, the nDVR server 112 may initiate a particularcourse of action, which may include but is not limited to scheduling asecond or “ghost” recording of the particular content asset in theseries from a different source and/or a different time and/or date,which it may temporarily be “exempt” from quota. In some embodiments,the nDVR server 112 may generate a notification to the user regardingthe change in the guide data and request further information to maximizethe chance that the desired content is recorded.

FIG. 2 is a flow diagram of a method for pausing and recording livecontent in an nDVR system, in accordance with an embodiment of thedisclosure. In brief overview, at block 205 a time shift buffer may begenerated. At block 210, a request may be received to record livecontent. At block 215, the content from the time shift buffer may beconverted responsive to the request. At block 220, a manifest fileassociated with the recorded content may be generated.

At block 205, a time shift buffer may be generated. In some embodiments,time shift buffers may be generated to enable customers to pause livecontent. In some embodiments, the time shift buffers may be localdirectories to temporarily store content segments received from the CDN104 during a live broadcast of a content asset. A user may pause,rewind, or fast-forward the live content stored in the time shift buffervia the live client 168 of the client device 110. Time shift buffers maybe individual user-based rolling recordings for pre-determineddurations. For example, if a time shift buffer is set for three hours,when the maximum duration has been reached, content at the beginning ofthe buffer may be deleted in order to save new content. In someembodiments, the duration of a time shift buffer may be set as asubscription option (e.g., 30 minutes, 60 minutes, etc.), may bedesignated by an administrator of the nDVR system 100, or may bedesignated by the user. In some embodiments, the contents of the timeshift buffer may not be counted toward the quota associated with theuser account.

In some embodiments, the content segments received by the time shiftbuffer from the CDN 104 during the live broadcast may only be kept for aspecific duration. In some embodiments, the content segments received bythe time shift buffer from the CDN 104 during the live broadcast mayonly be kept until the user changes the data source (e.g., televisionchannel) or turns off the client device 110. In some embodiments,multiple time shift buffers may be available to enable swapfunctionality (e.g., permitting the user to swap between two or morechannels) or picture-in-picture functionality.

At block 210, a request may be received to record live content. In someembodiments, the user may use the live client 168 to indicate he or shewishes to record the live content. The request may be generated by thelive client 168 and transmitted to the nDVR client 166.

At block 215, the content from the time shift buffer may be convertedresponsive to the request. In some embodiments, the nDVR client 166 mayreceive a request to record the live content, and all of the content ofthe time shift buffer may be converted to a recording. In someembodiments, the conversion of the live content to a recording maycomprise transmitting the contents of the time shift buffer to adirectory in the nDVR storage array 106 associated with the user accountfor the client device 110. In some embodiments, the nDVR client 166 mayobtain portions of the requested content that may be missing. Forexample, if a user began watching a show 10 minutes after the showbegan, when the user requests to record the live content, the time shiftbuffer may only contain media segments from the moment the user turnedon the client device and tuned to the live content. In some embodiments,the requested recording may only include portions of the live contentviewed by the user. In some embodiments, the entire live content may beobtained from the CDN 104 or the nDVR storage array 106 and stored tothe user directory associated with the client device 110.

At block 220, a manifest file associated with the recorded content maybe generated. In some embodiments, the manifest file may be generated bythe nDVR client 166, the nDVR server 112, the nDVR storage array 106, oranother entity in the nDVR system 100. In some embodiments, a manifestfile is generated for the recording because manifest files and qualitycontrol checks are not generated for live content. In some embodiments,the nDVR client 166 may generate a manifest file for live content andmay discard the manifest file once the contents of the time shift bufferare deleted. The generated manifest file may be transmitted to the nDVRsystem (e.g., nDVR server 112, nDVR storage array 106, or another entityin the nDVR system 100) for storage in association with the recordedcontent.

Additionally, the nDVR server 112 may perform segmentation of thetransport stream received from the live client 168 of the client device110. The segmentation of the transport stream may comprise dividing thetransport stream into a plurality of media segments and storing themedia segments in the nDVR storage array 106.

In some embodiments, a process associated with the nDVR application 186may manage a plurality of sources in the nDVR system 100. In managing asource, the process may determine the location within the CDN 104. Insome embodiments, the location of the source may be manually entered byan administrator of the system. In some embodiments, the location of thesource may be determined by obtaining the information from one or morerecords in the system. In some embodiments, the location of the CDN 104may be received from the source itself. In some embodiments, the processmay make an association between a source and a particular location inthe CDN 104. In some embodiments, the location may be used to instructthe nDVR storage array 106 to retrieve a particular file. The processassociated with the nDVR application 186 may also associate the sourcewith a location to retrieve or otherwise obtain guide data or metadatafor the content assets from the source.

The process may also determine which rights are associated with thesource. For example, the source may permit one copy of a content assetper user or may permit one copy of the content asset to be used bymultiple users. This may affect the instructions issued by the nDVRserver 112 to the nDVR storage array 106 to copy a file associated withthe content asset to one location or to clone the file to multiplelocations.

Additionally, the process may monitor the duration of live segments. Thelive segment durations may be used by a process in the generation of amanifest file. The process may monitor the live segment durations andmaintain and/or update records associated with the content asset fromthe source on the CDN 104.

FIG. 3 is a flow diagram of a method 300 for scheduling a recording inan nDVR system 100, in accordance with an embodiment of the disclosure.In brief overview, at block 305, a request may be received to record anasset. At block 310, a determination may be made whether a user is knownin the system 100. If the user is not known, then at block 315, a recordassociated with the user may be created. If the user is known, at block320 a record associated with the requested asset may be created. Atblock 325, record events may be created for events, such as, but notlimited to, the generation of a manifest file associated with the asset,the completion of an entitlement validation associated with the assetfor the user, and the completion of a quality control check associatedwith the asset. At block 330, a manifest file may be generated. At block335, an entitlement validation associated with the asset for the usermay be completed. At block 340, a quality control check associated withthe asset may be completed. In some embodiments, blocks 305-325 may beassociated with scheduling a recording of a content asset. In someembodiments, blocks 330-340 may be associated with recording a contentasset.

At block 305, a request may be received to record a content asset. Therequest may be received from a client device 110 associated with a useraccount. The request may include one or more of a user identifier, asource and/or channel identifier, a start time associated with a contentasset, and the duration associated with the content asset. In someembodiments, the source identifier may be in the form of a uniformresource identifier (URI).

At block 310, a determination is made whether a user is known in thesystem 100. In some embodiments, the nDVR server 112 may check the nDVRstorage array 106 to determine if the user is known in the system 100.In some embodiments, the nDVR server 112 may check to see if a record ora directory associated with the user exists. The nDVR server 112 may usethe user identifier received in the request to determine if a user isknown in the system 100. In some embodiments, the nDVR server 112 maydetermine if the user identifier is associated with multiple users. Insome embodiments, multiple people at a customer residence may use thenDVR system 100. A single person may be designated as the main user, butother users may be associated with the main user. For example, if ahousehold comprises a family with two adults and three children, oneadult may be designated as the main user and have a home directoryassociated with the main user. Associated users, such as the other adultand the children, may have affiliated user accounts. In a multi-useraccount, there may be account-level and user-level content, as well ascontent-specific and feature-specific parental controls, describedbelow.

If the user is not known, then at block 315, a record associated withthe user may be created in the nDVR system 100 (e.g., nDVR storage array106). In some embodiments, a directory associated with the user may becreated. In some embodiments, the nDVR server 112 may create a directoryfor affiliated users within or in association with the directory of themain user account. In some embodiments, an asset directory for therequested asset may exist. For example, if a user is requesting toschedule an episode of a television show, an asset directory may existfor the series. The nDVR server 112 may create a record or directory forthe specific content asset (e.g., television episode). In someembodiments, scheduled recordings may overlap due to user-defined oradministrator-defined configurations associated with pre-roll andpost-roll settings associated with content assets.

If the user is known, at block 320 a record associated with therequested asset (e.g., asset record) may be created. The recordassociated with the requested asset may comprise information on thesource of the content (e.g., in the form of a URI), a recording state,and an allocated portion of the quota for the user account. Theallocated portion of the quota may be a descriptor and a value. In someembodiments, the asset record may comprise a state field, which may beset to “scheduled.”

At block 325, the nDVR server 112 may create record events for events,such as, but not limited to, the generation of a manifest fileassociated with the asset, the completion of an entitlement validationassociated with the asset for the user, and the completion of a qualitycontrol check associated with the asset. In some embodiments, recordevents may be stored in the nDVR storage array 106 the nDVR server 112,an nDVR database associated with the nDVR server 112, and/or otherentity within the nDVR system 100 in association with the asset record.

Although blocks 330, 335, and 340 appear in FIG. 3 in sequential order,it should be noted that blocks 330, 335, and 340 may occur in differentorders and their execution is not dependent upon each other.

At block 330, a manifest file may be generated. The manifest file may,in one aspect, provide information related to identifying the segmentsof media content that the client device 110 needs to acquire andsequencing those segments. Therefore, the manifest file may provide asequential listing of files that the client device 110 needs to receivefrom the CDN 104 to correctly render media content to the one or moreusers. The manifest file, sometimes referred to as a playlist, mayinclude information pertaining to segments of media that are to bestreamed to the client device 110 to provide the media programming thatis requested by the user. In other words, the manifest file, whenprovided to the client device 110, allows the client device 110, andmore particularly, the one or more processors, to access segments ofmedia from the CDN 104 in a particular sequence as indicated in themanifest file to provide complete media content to the user of theclient device 110. For example, a 10-minute media content or programmingmay be partitioned into 300 media segments. In one aspect, the manifestfile provided to the client device 110 may include informationassociated with accessing each of the 300 media segments in the correctorder to provide complete media content to the user.

In some embodiments, a process associated with the nDVR server 112 mayscan the nDVR storage array 106 at pre-determined intervals orresponsive to triggering events to identify one or more record eventsindicating a manifest file needs to be generated for an asset. Themanifest file associated with the asset may be generated prior to theairing or broadcast of the asset. The manifest file associated with theasset may be generated in near proximity to the beginning of therecording of the asset. The manifest file may be stored in the userdirectory in the nDVR storage array 106 of the requesting user. Themanifest file may use the current segment duration for calculating thenames of all of the expected media segments and use time boundaries todetermine key references. After the manifest file is created, the recordevent for generation of the manifest file may be removed from the nDVRstorage array 106. Further details for generation of a manifest file arediscussed below in relation to FIG. 4.

At block 335, an entitlement validation associated with the asset forthe user may be completed. An entitlement validation may ensure that auser is entitled to the content asset at the time it is aired orbroadcast. Entitlement to the content asset may not be required toschedule a recording. If a user was entitled to the content asset and itwas recorded, the user may play back the content even if the user is nolonger entitled to the content asset. A process associated with the nDVRserver 112 may check for entitlements for all scheduled recordingsduring the recording period. If the user is not entitled to therecording, any recorded content may be removed from the user directory,and all schedules for recording future portions of the content may beremoved. Once a content asset has been validated by the process, theasset record may be updated (e.g., the state of the asset record may bechanged to “recorded”) to reflect that playback is available for thatasset. Content may not be available for playback until the entitlementvalidation has been completed. Once an entitlement validation for anasset has been completed, the record event associated with theentitlement validation may be removed from the nDVR storage array 106.Further details for entitlement validation of an asset are discussedbelow in relation to FIG. 5.

At block 340, a quality control check associated with the asset may becompleted. When recordings occur but have not been validated, they maybe flagged, indicating that quality control needs to take place. Thequality control process may traverse the manifest file and check for allof the files, updating the manifest file where corrections are needed.For example, modifications to the manifest file may be required ifsegment boundary times have changed. Additionally, missing segments maybe concealed with alternate bandwidth versions or concealer segments(e.g., segments displaying a message, such as “Locating your video . . .”). Once a quality control check for an asset has been completed, therecord event associated with the quality control check may be removedfrom the nDVR storage array 106. Further details for a quality controlcheck of an asset are discussed below in relation to FIG. 7.

Responsive to scheduling the recording for a content asset, a responsemay be transmitted to the client device 110. The response may include anasset identifier. The response may also include quota data associatedwith the user.

In some embodiments, updates to guide data may be evaluated for seriesrecordings and search-based recordings that exist in the nDVR storagearray 106, and may result in scheduled recordings per user-configuredsettings. Changes in guide data may be evaluated. Users may be notifiedof changes and any resulting actions. If the content is found in anotherslot, it may be automatically scheduled in addition to the originalslot, and the new slot may be exempted from the quota for apre-determined period.

In some embodiments, a user, or an agent on behalf of a user, mayschedule a series recording for content (e.g., television series). Theclient device 110 may transmit a request to the nDVR server 112 toschedule a series recording. The request may include a user identifier,a series identifier, a specified pre-roll (e.g., the time period priorto the scheduled airing of the asset), post-roll (e.g., the time periodafter the scheduled airing of the asset), and/or flags for variousattributes of the content assets to be recorded. Flags for variousattributes of the content assets may include flags for the format of theasset (e.g., high definition (HD) or standard definition (SD)), aspecific source of the content asset (e.g., specifying a particularbroadcast or cable channel), type of airing (e.g., first run of thecontent asset or reruns of the asset), or number of assets to record ormaintain in the user directory.

In some embodiments, the nDVR server 112 may comprise an adaptivebit-rate (ABR) application 188 which may process a given media segment.The adaptive bit-rate module may learn about all of the bit-rate andprofile versions available for a given segment and may keep track of thecurrent set of files at all times. In some embodiments, the ABRapplication 188 may monitor expected segment duration and alert qualitycontrol if a segment duration has changed. The ABR application 188 mayobtain a list of assets that meet a given list of criteria. For example,the ABR application 188 may identify all records that have an associatedstate of either “scheduled” or “recording” and the start-time is withinthe segment duration of the current time or has already passed.

In some embodiments, if the current time is later than the start timeplus the duration of the content asset, the ABR application 188 maychange the state to “recorded.” For each profile of the specific source,the ABR application 188 may initiate a file clone process to create acopy of the file in each of the target locations.

In some embodiments, if a problem occurred with a recording, anotification may be generated for the user, and an attempt to reschedulethe recording of the content asset may be made. Rescheduled assets maynot count towards the quota associated with a user account. In someembodiments, the asset record may reflect information on the originalasset). Rescheduled assets may not need to be the same channel or format(e.g., HD or SD), but preference may be given to the closest match.

In some embodiments, if the content asset that is being recorded isdetermined to be a live event, the recording may need to be extended inorder to record the entire content asset. For example, if a footballgame is being recorded, and the game goes into overtime, the nDVRapplication 186 may need to extend the duration of the recording inorder to capture the entire football game. In some embodiments, if arecording of a content asset is scheduled to follow a live event, suchas a football game, and another airing or broadcast of the content assetis known, the nDVR application 186 may generate a notification to theuser. The notification may comprise the information associated with theairing or broadcast of the content asset at a different time, day,and/or source and recommend to the user to select the alternate airing.In some embodiments, the nDVR application 186 may schedule a recordingfor the alternate airing of the content asset and record the contentasset. The nDVR application 186 may generate a notification to the userrequesting instructions regarding whether to keep or remove therecording of the content asset obtained from the alternate airing orbroadcast. The recording of the content asset obtained from thealternate airing or broadcast may not be counted against the quotaassociated with the user account. In some embodiments, the extension oftime resulting from live event overages may be exempted from the quota,although the original recording of the content asset may still counttowards the quota. In some embodiments, social media outlets may bemonitored by the nDVR server 112 to determine if a live event has runover the allocated time.

FIG. 4 is a flow diagram of a method 400 for generating a manifest filefor playback in an nDVR system 100, in accordance with an embodiment ofthe disclosure. At block 405, a process associated with the nDVRapplication 186 may check for record events indicating a manifest fileassociated with a content asset needs to be generated. At block 410, theprocess may generate a plurality of uniform resource identifiers (URI)for a plurality of media segments of the content asset and store them inthe manifest file. At block 415, the process may generate the manifestfile. At block 420, the process may store the manifest file in the assetdirectory of the nDVR storage array 106 associated with the requestinguser.

At block 405, a process associated with the nDVR application 186 maycheck for record events indicating a manifest file associated with acontent asset needs to be generated. In some embodiments, the processassociated with the nDVR application 186 may check for one or morerecord events at predetermined time intervals. For example, the processmay scan the nDVR server 112 or a database associated with the nDVRserver 112 containing the records associated with scheduled recordings.The process may scan to identify one or more record events indicating amanifest file needs to be created and may initiate generation of themanifest file or files. The process may scan or check for record eventsat predetermined time intervals, which in some embodiments, may be setby an administrator of the system 100. The scanning or checking forrecord events at predetermined time intervals may be independent of therecording of the content asset. In some embodiments, the processassociated with the nDVR application 186 may check for record eventsresponsive to a triggering event (e.g., receiving an indication that acontent asset is being broadcast or aired).

In some embodiments, the record event indicating a manifest fileassociated with a content asset needs to be generated may have beencreated by the nDVR server 112 when the content asset was scheduled tobe recorded. In some embodiments, the nDVR server 112 may generate arecord event responsive to a user request to schedule a recording. Insome embodiments, the nDVR server 112 may generate a record eventresponse to a series recording event. In some embodiments, the recordevent associated with generating a manifest file for a content asset maybe stored in the nDVR storage array 106. In some embodiments, the recordevent associated with the generation of a manifest file for the contentasset may be stored in an nDVR database.

At block 410, the process may generate a plurality of uniform resourceidentifiers (URI) for a plurality of media segments of the content assetand store them in the manifest file. The naming of all of the mediasegments may be deterministic such that manifest files may be createdand manipulated prior to the existence of the actual content. The filename for the media segments may contain information on the contentsource (e.g., source ID, source version), time (e.g., first full secondin segmented media represented in UTC time or the like), and bit-rate(e.g., in kbps) and may include additional profile indicators as needed.In some embodiments, the duration of segments may be retrieved from oneor more records maintained and/or updated by a process associated withthe nDVR application 186 during source management, as described above.

For example, a media segment named “CB2A-01-01349007300-1800A.ts” may begenerated using the following information:

CB2A=Source ID (52010)

01=primary version of this source (ad zones or blackout zones)

1349007300=09/30/2012 12:15:00 PM GMT (first full second in segment)

1800—1.8 Mbps (1800 kbps)

A=primary profile at this bit-rate (in case there are multiple profilesat the same bit-rate)

The nDVR application 186 may generate a plurality of URIs using thedeterministic naming schema for the requested content asset and storethe plurality of URIs in the manifest file for the requested contentasset. Each segment name may include information associated with thesource of the asset and other relevant information. Additionally, inorder to support digital rights management systems, the deterministicnaming schema of the media segments may be specified based on the sourceof the asset and time boundaries, which will direct the client device110 to a DRM license generator that is capable of determining theappropriate key for the content.

At block 415, the process may generate the manifest file. In someembodiments, a manifest file may comprise one or more URIs of mediasegments or transport streams associated with the content asset. In someembodiments, the manifest file may be generated based upon at least inpart the plurality of generated URIs. In some embodiments, multiplemanifest files may be generated. For example, a manifest file may begenerated for each bit-rate associated with a particular device-class(e.g., smartphone, tablet, television, etc.). In some embodiments, themanifest file may comprise all of the URIs for each of the differentprofiles (e.g., profiles associated with different device classes).

Additionally, manifest files may include information for encryption(e.g., based on predictable information such as source of the contentasset and time associated with each media segment), URIs associated theplurality of media segments for each profile (e.g., profiles associatedwith different device classes), and URIs and/or information associatedwith information associated with a trick-mode file or thumbnail filesand/or images. A trick-mode is a feature of digital video systems, whichmimic the visual feedback given during fast-forward and rewindoperations that were provided, by analogue systems such as VCRs bymanipulating the video stream to include only a subset of frames. Thethumbnail files and/or images associated with the media segment may begenerated when an instantaneous decoding refresh (IDR) frame at thebeginning of each media segment is converted to a thumbnail representingthat media segment. In the case of 15-second media segments, the usermay “walk” forward or backward in increments of 15 seconds for thecontent asset. The thumbnails associated with each media segment may bestored in association with the manifest file and links or URIsassociated with the thumbnails may be stored in the manifest file.

At block 420, the process may store the manifest file in the assetdirectory of the nDVR storage array 106 associated with the requestinguser. The manifest file may be stored in association with a user accountassociated with the request to record the content asset. For example,the manifest file may be stored in a directory in cloud storageassociated with the user account. In the case of a sub-user, themanifest file may be stored in a sub-directory of a directory associatedwith the user account.

In some embodiments, the nDVR application 186 may convert aninstantaneous decoding refresh (IDR) frame at the beginning of eachmedia segment to a thumbnail representing that media segment. In thecase of 15-second media segments, the user may “walk” forward orbackward in increments of 15 seconds for the content asset. Thethumbnails associated with each media segment may be stored by the nDVRapplication 186 in association with the manifest file.

The generation of the manifest file may happen in near proximity to thebeginning of the recording of the asset. The generation of the manifestfile may happen any time after the asset has been scheduled to berecorded and prior to the broadcast or airing of the asset. After themanifest file has been created and stored in the asset directoryassociated with the user, the record event may be removed from the nDVRstorage array 106.

FIG. 5 is a flow diagram of a method 500 for entitlement validation of acontent asset in an nDVR system 100, in accordance with an embodiment ofthe disclosure. At block 505, a process associated with the nDVRapplication 186 may check for record events indicating an entitlementvalidation associated with an asset for a user needs to be completed. Atblock 510, the process determines whether the user is authorized orentitled to access the content in proximity to the airtime or time ofbroadcast of the content asset. If the process determines the user isauthorized to access the content, then no further action may be taken.In some embodiments, the process may remove the record event associatedwith the entitlement validation from the nDVR storage array 106responsive to the determination that the user is entitled to access theasset. If the process determines the user is not authorized to accessthe asset, then at block 515, the process may generate and transmit anotification to the user. At block 520, the process may generate arecord event indicating that the content asset should be removed fromthe user account. At block 525, the process may delete the record eventindicating an entitlement validation associated with a content assetneeds to be completed.

At block 505, a process associated with the nDVR application 186 maycheck for record events indicating an entitlement validation associatedwith an asset for a user needs to be completed. In some embodiments, theprocess associated with the nDVR application 186 may check for one ormore record events at predetermined time intervals. For example, theprocess may scan the nDVR server 112 or a database associated with thenDVR server 112 containing the records associated with scheduledrecordings. The process may scan to identify one or more record eventsindicating an entitlement validation needs to be completed. The processmay scan or check for record events at predetermined time intervals,which in some embodiments, may be set by an administrator of the system100. In some embodiments, the process associated with the nDVRapplication 186 may check for record events responsive to a triggeringevent (e.g., receiving an indication that a content asset is beingbroadcast or aired).

In some embodiments, the process may scan or check to identify forrecord events indicating an entitlement validation needs to be completedperiodically. The process may check the time of the scheduled recordingand the current time and if the time of the scheduled recording and thecurrent time fall within a predetermined threshold, the process mayinitiate the entitlement validation associated with the content asset.

In some embodiments, the nDVR server 112 may have created a record eventassociated with an entitlement validation at the time the content assetwas scheduled to be recorded. In some embodiments, the nDVR server 112may generate a record event responsive to a user request to schedule arecording. In some embodiments, the nDVR server 112 may generate arecord event response to a series recording event. In some embodiments,the record event associated with an entitlement validation for a contentasset may be stored in the nDVR server 112, nDVR storage array 106,and/or another entity in the nDVR system 100. In some embodiments, therecord event associated with the entitlement validation for the contentasset may be stored in an nDVR database associated with the nDVR server112.

At block 510, the process determines whether the user is authorized orentitled to access the content in proximity to the air time or time ofbroadcast of the content asset. If the process determines the user isauthorized to access the content, then no further action may be taken.In some embodiments, the process may remove the record event associatedwith the entitlement validation from the nDVR storage array 106responsive to the determination that the user is entitled to access theasset. If the process determines the user is not authorized to accessthe asset, then at block 515, the process may generate and transmit anotification to the user.

At block 520, the process may generate a record event indicating thatthe content asset should be removed from the user account. The recordevent indicating that the content asset should be removed may be storedin the nDVR storage array 106 or in an nDVR database.

At block 525, the process may delete the record event indicating anentitlement validation associated with a content asset needs to becompleted.

In some embodiments, users must be entitled to the content at the timethe content is aired. Entitlement may not be required to schedule arecording of a content asset. If a user was entitled to the content andit was recorded, the user can play back the content even if the user isno longer entitled to the content.

The nDVR application 186 may check for entitlements for all scheduledrecordings during the recording period of the content asset. If the useris not entitled to the recording, any recorded content may be deletedfrom the user directory, and all schedules for recording future portionsof the content may be removed.

Once the content entitlement has been validated, the asset record may beupdated to reflect that playback is available for that asset. Contentmay not be available for playback until the entitlement check hasoccurred. If playback is attempted, and the nDVR application 186determines that there is not sufficient recorded content, the user maybe directed to the live content that may be currently airing orbroadcast. If playback is attempted and sufficient time has passed, theentitlement check may be accelerated, and the entitlement validationrecord may be removed.

The nDVR application 186 may check or scan the nDVR storage array 106 ornDVR database to identify record events associated with entitlementchecks that may have been scheduled. If the user is determined to beentitled to the content asset, the record event for the entitlementcheck is deleted. If the user is not entitled to the asset, the assetrecord state may be changed to “not authorized.” The quota informationassociated with the user account may be modified. A user notificationmay be generated. A record event may be created to delete the scheduledrecording. In some embodiments, the record indicating the asset shouldbe deleted is created with a pre-determined time interval in the future(e.g., five minutes in the future).

In some embodiments, the nDVR application 186 may provide the user anoption to upgrade his or her account level or otherwise acquire accessto the content prior to the time of recording. The nDVR application 186may periodically contact the user through messages in the system,emails, text messages, or other forms of communication to indicate thatthe user currently does not have sufficient rights to access the assetand may provide one or more options to obtain the rights to access thecontent.

When a cancelled recording request is received or a request to deleterecorded content is received, the nDVR application 186 may remove anyentries in future copies or clone jobs. The nDVR application 186 mayremove all files and associated directories for the content asset. ThenDVR application 186 may remove the record for the content asset.

In some embodiments, the asset state may be changed to “deleted” and arecord may be created to delete the asset (with a delete time-dateassigned based on circumstances, generally past a configured “undelete”period). The nDVR application 186 may check the nDVR storage array 106to identify entries with a time stamp that has passed. A call may bemade to the nDVR storage array 106 to iteratively delete all files anddirectories under the main asset directory and then to remove the assetdirectory. The asset record may then be removed from the nDVR storagearray 106. The deleted record may then be removed from the nDVR storagearray 106. In some embodiments, if a request is received to “undelete”an asset during a configured “undelete” period, the record eventassociated with the content asset signaling the nDVR application 186 toremove the asset record from the nDVR storage array 106 may be deleted,thus ensuring the content asset will remain in the directory associatedwith the user account. If the “undelete” request is received past theconfigured “undelete” period, then the content asset may not beundeleted. In some embodiments, the nDVR application 186 may generate anotification to the client device 110 comprising the next date, time,and source the content asset may be aired and request whether the userwould like to schedule a recording for the content asset.

In some embodiments, if a content asset is scheduled to be deletedbecause a user exceeded their quota, the nDVR application 186 mayindicate the record associated with the content asset as such (e.g., therecord state may be set as “-delete-quota”). The nDVR application 186may periodically scan records associated with content assets to identifythose records marked for deletion because a user exceeded their quota.In some embodiments, the nDVR application 186 may generate anotification to the user. The notification may be a text message, emailmessage, phone call, or other type of notification. In some embodiments,the notification may include multiple upgrade options to increase theuser's quota. If the user selects an upgrade option from a client device110, the nDVR application 186 may receive an indication of a selectionfrom the user.

Responsive to the indication received from the user, the nDVRapplication may “undelete” the content asset marked for deletion becausethe user exceeded their quota by removing the delete record event ormodifying the state of the record to remove the delete state. In someembodiments, responsive to receive an indication of a selection from theuser, the nDVR application 186 may generate a message to the user,asking whether the content assets marked for deletion should be kept. Ifthe user indicates that they would like to keep the content asset, thenthe nDVR application 186 may remove the delete record event or modifythe state of the record to remove the delete state. If the userindicates that they would like to delete the content asset, the nDVRapplication 186 may do nothing and permit the content asset to bedeleted after a pre-determined time. In some embodiments, the nDVRapplication 186 may initiate a process to delete the content asset fromthe user's account.

FIG. 6 is a flow diagram of a method 600 for write-level optimization inan nDVR system 100, in accordance with an embodiment of the disclosure.The method 600 for write-level optimization in an nDVR system 100 may beexecuted in response to a request to clone an asset to one or moretarget locations.

The nDVR application 186 may determine for each content asset sourcewhether any scheduled or recording assets need to have files copied. ThenDVR application 186 may check the nDVR server 112 for records and/orrecord events indicating a state of “scheduled” or “recording” for thesource in question and generate a list of users and requested contentassets (e.g., the target file name may be based on user, asset, source,and/or time). The nDVR application 186 may check the nDVR storage array106 to determine assumed segment duration and destinationcharacteristics. The nDVR application 186 may check to see if the lastcloned files represent the completion of the asset, and if so, changethe state to “recorded-qc.” The nDVR application 186 may request thelatest manifest file for the source, check the file modification time,and determine that all segments are in the manifest files during theduration from the last run based on the assumed segment duration. ThenDVR application 186 may check segments against expected segmentdurations; if the durations are the same, only a single set of filesshould be identified in the previous step. If the assumed segmentduration remains unchanged (e.g., the segment has not increased induration), a re-check is “scheduled” based on the assumed segmentduration. If the segment duration does not match, a quality control jobmay be scheduled to adjust the manifest files, and the states arechanged to “scheduled-qc” or “recording-qc.” The nDVR storage array 106may be instructed to clone a file based on its network location to alist of target locations, for each file identified in the previous step.In some embodiments, the nDVR application 186 may sleep until the nextsegment is expected.

In some embodiments, when the content becomes (or is expected to become)available on the CDN 104, the nDVR application 186 may search the nDVRstorage array 106 for all target locations and instruct the appropriatenDVR storage array(s) 106 to store the segments in all of the requiredlocations.

In some embodiments, the nDVR storage array 106 may create one set ofi-nodes and blocks and create multiple files using the referencedi-nodes in response to receiving instructions to clone an asset to oneor more target locations. The nDVR storage array 106 may receiveinstructions to clone a file from a specified location on the network toa list of target locations. Each target location may be a distinct file,only available to the target/intended user. This reduces the number ofwrite-cycles on the disk, enables the creation of an increased number offiles given a specific write-cache (increasing the system throughput),and provides for storage optimization.

At block 605, the nDVR storage array 106 may receive from the nDVRserver 112 a source location for a file associated with a content assetand a plurality of target file locations to clone or copy the file. Atblock 610, the nDVR storage array 106 may retrieve the file from thesource location. At block 615, the retrieved file may be processed andapportioned to a plurality of data blocks. At block 620, the pluralityof data blocks may be converted. In some embodiments, the conversion ofthe data blocks may include encoding the data blocks prior to storage ata target location. At block 625, the plurality of data blocks may bestored (e.g., in the nDVR storage array 106). At block 630, one or morereference pointers associated with the plurality of data blocks may begenerated. At block 635, the one or more reference pointers to each ofthe plurality of data blocks for the file may be stored to each of theplurality of target file locations (e.g., a directory associated with auser account).

At block 605, the nDVR storage array 106 may receive from the nDVRserver 112 a source location for a file associated with a content assetand a plurality of target file locations to clone or copy the file. Insome embodiments, the nDVR storage array 106 may receive the sourcelocation and a plurality of target locations (e.g., list of locations)from the nDVR application 186. The plurality of target locations may bea list of source locations on the CDN 104 and/or the CAC 102. Theplurality of target locations may be a list of source locationsmaintained by the nDVR application 186. The plurality of targetlocations may be a list of source locations generated and maintained bya process associated with the CDN 104 and/or the CAC 102. In someembodiments, the source location for a file associated with a contentasset and the plurality of target locations may be received by the nDVRstorage array 106 responsive to the nDVR server 112 receiving a requestto schedule a recording for the identified content asset. In someembodiments, the nDVR storage array 106 may receive a request to or copythe identified file to the plurality of target locations generated bythe nDVR application 186.

At block 610, the nDVR storage array 106 may retrieve the file from thesource location. In some embodiments, the nDVR storage array 106 mayobtain the file from the source location. In some embodiments, the nDVRstorage array 106 may retrieve the file from the source locationresponsive to receiving the source location of the file. In someembodiments, the nDVR storage array 106 may generate a record eventassociated with receiving the source location of the file and/or therequest to clone the identified file. A process associated with the nDVRapplication 186 may periodically scan the nDVR storage array 106 todetermine if any identified files need to be retrieved from theidentified source location. In some embodiments, the process associatedwith the nDVR application 186 may instruct the nDVR storage array 106 toretrieve any files associated with record events generated responsive toreceiving a request to clone the identified file. Upon retrieval of theidentified file from the source location, the nDVR storage array 106 maydelete the record event associated with the retrieved file.

At block 615, the retrieved file may be processed and apportioned into aplurality of data blocks. In some embodiments, the processing of theretrieved file may include forward error correction (FEC) or channelcoding. FEC is a technique used for controlling errors in datatransmissions over unreliable or noisy communication channels. Thesender of the information (e.g., source location) may encode the data ina redundant manner (e.g., using error-correcting code), which may permitthe receiver to detect a limited number of errors that may have occurredanywhere in the message and may permit correction of these errorswithout retransmission of the data. FEC may permit the receiver tocorrect errors without needing a reverse channel to requestretransmission of data, but at the cost of a fixed, higher forwardchannel bandwidth. FEC is therefore applied in situations whereretransmissions are costly or impossible, such as one-way communicationlinks and when transmitting to multiple receivers in multicast.

In some embodiments, the processing of the retrieved file may includepartial response maximum likelihood processing (PRML). PRML is a methodfor converting the weak analog signal from the head of a magnetic diskor tape drive into a digital signal. PRML attempts to correctlyinterpret small changes in the analog signal. In some embodiments, theprocessing of the retrieved file may include processing associated withlossless compression file system.

Further, at block 615, the processed file may be apportioned into aplurality of data blocks. In some embodiments, i-nodes associated withthe apportioned blocks may be created. I-nodes may be data structuresthat may store information about a file system object (e.g., metadata)and usually excludes data content and file name.

At block 620, the plurality of data blocks may be converted. In someembodiments, the conversion of the data blocks may include encoding thedata blocks prior to storage at a target location. At block 625, theplurality of data blocks may be stored (e.g., in the nDVR storage array106).

At block 630, one or more reference pointers associated with each of theplurality of data blocks may be generated. The one or more referencepointers may be generated based upon at least in part the i-nodesassociated with apportioned data blocks.

At block 635, the one or more reference pointers associated with each ofthe plurality of data blocks associated with the file may be stored toeach of the plurality of target file locations (e.g., a directoryassociated with a user account). In some embodiments, each of the one ormore references pointers associated with each of the plurality of datablocks may be stored at one of the plurality of the target filelocations.

In some embodiments, utilizing a single copy (e.g., stored data blocks)of an asset may reduce the write-commit demand and required storagecapacity of the nDVR storage array 106. Additionally, a single copy isable to be cached in the network, whereas individual copies may increasethe transport required between the nDVR storage array 106 and the one ormore client devices 110 requesting the content asset. The nDVR system110 may be able to support the ability to define, on a source-by-sourceor source-version-by-source-version basis, if the single copy issufficient or if each user must have his or her own copy. The popularityof the source may warrant the creation of regional copies where a singlecopy is permitted. In some embodiments, a mix of single-copy,regional-copy, and user-specific copy within a single user recording maybe supported. In some embodiments, the nDVR application 186 may instructthe nDVR storage array 106 to copy the requested content asset to theappropriate directories.

FIG. 7 is a flow diagram of a method 700 for quality control checks inan nDVR system 100, in accordance with an embodiment of the disclosure.In some embodiments, the nDVR system 110 may perform a quality controlcheck some time after the completion of the recording of the asset. Inbrief overview, at block 705, a process of the nDVR application 186 maycheck for a record event indicating a quality control check for acontent asset needs to be completed. At block 710, a manifest fileassociated with the content asset may be compared with the content assetensuring the media segment files stored in the manifest file as URIs arepresent and stored in the nDVR system 110. At block 715, the processdetermines whether the manifest file is accurate. If the manifest fileis accurate, then the quality control check may be complete, and therecord event associated with the quality control check may be deleted.If the manifest file is not accurate, then at block 720, the manifestfile may be modified, based at least in part on the plurality of mediasegments of the content asset. At block 725, the modified manifest filemay be stored, which may signal the completion of the quality controlcheck. The record event associated with the quality control check may bedeleted.

At block 705, a process associated with the nDVR application 186 maydetermine a quality control check may be required for a content asset.In some embodiments, a process associated with the nDVR application 186may check the nDVR server 112, nDVR storage array 106, an nDVR databaseassociated with the nDVR server 112, and/or another entity in the nDVRsystem 100 to identify one or more record events for quality controlchecks associated with one or more asset records. In some embodiments,the record events for quality control checks may be indicated as a statein the nDVR storage array 106 such as a “-qc.”

In some embodiments, the process associated with the nDVR application186 may check for one or more record events at predetermined timeintervals. For example, the process may scan the nDVR server 112 or adatabase associated with the nDVR server 112 containing the recordsassociated with scheduled recordings. The process may scan to identifyone or more record events indicating a quality control check for acontent asset needs to be completed. The process may scan or check forrecord events at predetermined time intervals, which in someembodiments, may be set by an administrator of the system 100. In someembodiments, the process associated with the nDVR application 186 maycheck for record events responsive to a triggering event (e.g.,receiving an indication that a content asset has completed recording).

At block 710, a manifest file associated with the content asset may becompared with the content asset. The content asset, after broadcast, maybe available as media segments. The process may identify the manifestfile associated with the media segment files associated with the contentasset. In some embodiments, if an entitlement check is scheduled for afuture time and it is still within a pre-determined amount of time fromthe end of the airing of the content asset (e.g., one hour), anentitlement check or validation may be performed immediately. If thetime exceeds the pre-determined amount of time, the entitlement of theuser to access the content asset may be assumed, and the record eventassociated with the entitlement validation may be removed.

In some embodiments, the manifest file may be evaluated against thecurrent assumed segment duration for a given source. If these aredifferent, the manifest file may be rewritten, ensuring that segmentdurations for all existing segments are based on actuals, though putting“placeholders” for missing files.

At block 715, the process determines whether the manifest file isaccurate. If the manifest file is accurate, then the quality controlcheck is complete, and the record event associated with the qualitycontrol check is deleted. A state associated with the asset record forthe content asset may be set as “recorded” indicating that the asset hasbeen recorded.

If the manifest file is not accurate, then at block 720, the manifestfile is modified, based at least in part on the plurality of mediasegments of the content asset. In some embodiments, media segments maybe missing. If media segments for specific segments are missing, themanifest file may be modified to point to the next lower profile for themissing file or a lower profile present in the case of a segment at thelowest profile. If all files are missing for a specific segment of thecontent asset, a clip that exists on the network may be “inserted” intothe stream that indicates that there was a quality control issue. Forexample, the clip may present the user with a message, such as “locatingsignal” or “locating file,” and may remove the message at the pointwhere the segment media files are present.

In some embodiments, depending on the number and type of modificationsto the manifest file due to missing segment files, the content asset maybe marked as “recorded-pristine” or “recorded-near pristine,”“recorded-qh” (e.g., high quality, minor fixes), “recorded-qm” (e.g.,medium quality, moderate number of modifications), or “recorded-ql”(e.g., low quality, numerous or significant modifications to themanifest file). In some embodiments, record assets marked as“recorded-qm” or “recorded-ql” may result in the creation of a recordevent for rescheduling the recording and may store the record event inassociation with the asset record for content assets in an nDVRdatabase. A process associated with the nDVR application 186 mayidentify all record events for rescheduling the recording in the nDVRstorage array 106 and invoke one or more rescheduling algorithms.

At block 725, the modified manifest file may be stored, which may signalthe completion of the quality control check. The record event associatedwith the quality control check may be deleted.

In some embodiments, trick-mode file generation may occur as part of thequality control check. In some embodiments, the trick-mode filegeneration may occur after the completion of the quality control check.As described above, the trick-mode is a feature of digital video systemsthat mimics the visual feedback given during fast-forward and rewindoperations that were provided, by analog systems such as VCRs bymanipulating the video stream to include only a subset of frames. Thetrick-mode file generation may be based at least in part on thumbnailfiles generated from the media segments. The thumbnail files and/orimages associated with the media segment may be generated when aninstantaneous decoding refresh (IDR) frame at the beginning of eachmedia segment is converted to a thumbnail representing that mediasegment. In some embodiments, the process may use the media segment withthe lowest resolution to generate the thumbnail. In the case of15-second media segments, the user may “walk” forward or backward inincrements of 15 seconds for the content asset. The thumbnailsassociated with each media segment may be stored in association with themanifest file and links or URIs associated with the thumbnails may bestored in the manifest file. By creating thumbnail files from the IDRframe, the nDVR application 186 may not need to have additionaltranscoding or further processing.

FIG. 8 is a flow diagram of a method 800 for asset metering in an nDVRsystem 100, in accordance with an embodiment of the disclosure. In someembodiments, asset metering may be the periodic notification by theclient device 110 to the nDVR server 112 of the consumption of activityassociated with the client device 110 with respect to a given asset andassociated time or segment displayed. Asset metering may be used togenerate a record of how much of an asset is consumed. In someembodiments, asset metering may be used to understand what parts of anasset are of more or less interest to a consumer. In some embodiments,asset metering may be used for the creation of bookmarks (e.g., lastmedia segment consumed by the client device 110) to enable the customeror user of the client device 110 to resume playing at a different timeand/or on a different device.

At block 805, a client device 110 may receive one or more data streams.At block 810, the client device 110 may identify a source and timeassociated with each of the one or more data streams. At block 815, theclient device 110 may generate a report for asset metering and/orbookmarking based at least in part on information associated with theclient device 110, the source, and the time associated with each of theone or more data streams. In some embodiments, the report may compriseinformation indicating the viewership status for the identified sourceat the identified time associated with the data streams. At block 820,the generated report may be transmitted by the client device 110 to thenDVR system 110.

In some embodiments, the nDVR application 186 may create and/or use“bookmarks,” which may be created in the asset directory or in the nDVRstorage array 106, or both. Multiple bookmarks may exist for each asset.In some embodiments, one or more data streams may be transmitted to aclient device 110. One or more time stamps associated with one or moreportions of the data streams may be received. One or more records may begenerated based at least in part on the time stamps. One or more recordsmay be stored.

In some embodiments, one or more data streams may be transmitted to aclient device 110. In some embodiments, the one or more data streams maybe transmitted to one or more client devices 110. The data streams maybe transmitted responsive to a request for a content asset. In someembodiments, multiple data streams associated with different contentassets may be transmitted to the client device 110 (e.g.,picture-in-picture feature).

One or more time stamps associated with one or more portions of the datastreams may be received. In some embodiments, a user may indicate thathe or she would like to bookmark a content asset at a particular time.The user may indicate the desire to bookmark the asset using the clientdevice 110. In some embodiments, time stamps associated with the contentasset may be received responsive to a dropped connection with the clientdevice 110 or an indication that an application executing on the clientdevice 110 has stopped.

In some embodiments, one or more records may be generated. One or morerecords associated with the asset record for the content asset may begenerated based at least in part on the received time stamps. In someembodiments, the one or more records may be stored. In some embodiments,the records may be stored in the nDVR storage array 106 in associationwith the asset record. In some embodiments, the one or more records maybe stored locally on the client device 110. In some embodiments, onetime stamp may be associated with one client device 110 (e.g., a laptop)while a second time stamp may be associated with a different clientdevice 110 (e.g., a smartphone).

In some embodiments, when content assets are stored in association witha user account, a value may be assigned to the content as it relates tothe quota associated with the user account. The value may be based onsize, duration, duration blocks (e.g., a 62-minute recording may becounted as two 30-minute blocks), type (e.g., standard definition, highdefinition) or any combination thereof, and rules may be applied on aper-user basis resulting from the subscription options. If a userexceeds his or her quota, a requested recording of a content asset maystill be completed but access to the content may require upgrading to ahigher level of quota. In some embodiments, if a user is approaching hisor her maximum quota, the nDVR storage array 106 or nDVR server 112 maygenerate a notification to the one or more client devices 110 associatedwith the user account. In some embodiments, the notification maycomprise an indication of the current usage, the maximum quota, theupgrade options, and/or a listing of the content assets. In someembodiments, the notification may contain a link or button to the useraccount to allow the user to directly make changes in association withthe quota (e.g., delete assets, upgrade subscription, or the like).

In some embodiments, duration blocks for each version of each source maybe defined as a unique asset. For example, duration blocks may bedefined as one-hour or four-hour blocks. Security keys may rotate foreach source on the one-hour or four-hour boundaries. Assets may spanmultiple key boundaries, especially for pre- and post-content (e.g.,assets starting early or ending late). Based on the deterministic namingschema described herein, the name of the file may be used to determinean asset identifier associated with the file and the digital rightsmanagement (DRM) system to determine the correct keys to embed in theDRM license.

In some embodiments, a user may create “smart lists” or “user channels”based at least in part on the user's recorded content. For example, asmart list or user channel may be a user-created playlist of recordedassets associated with a user account. For example, if a user hasrecorded many episodes of a popular children's show, the user may createa smart list by adding one or more recorded assets associated with auser account. In some embodiments, users may share their smart listswith other users. However, the other users will only be able to play thesmart list if they also have recorded the same assets. For example, ifAdam creates a smart list of a week of a children's program, he may sendthe smart list to Bob. Bob also has the same content recorded, and Bob'sclient device 110 may play the assets in the order designated by Adam'ssmart list.

In some embodiments, the nDVR system 100 may provide the functionalityto retrieve a catalog of assets. The client device 110 may send arequest to the nDVR server 112. The nDVR server 112 may transmits a listof all content assets associated with the client device 110 and theirrespective states (e.g., scheduled for recording, recorded, etc.) Insome embodiments, the catalog of assets may include a list of deletedcontent assets that may be undeleted and a time frame when theun-deletion must occur. The nDVR server 112 may also transmit quotainformation associated with the client device 110 and/or the useraccount associated with the client device 110. In some embodiments, theclient device 110 may translate the various states into user-friendlylanguage. In some embodiments, the nDVR server 112 may translate andtransmit the information responsive to receiving the request from theclient device 110. The translation of the various states associated withthe content records, whether performed by the nDVR server 112 or theclient device 110, may present the user with a richer user experience.

Similarly, managed assets may give the user the ability createpriority-setting rules for deletion of content and co-existence ofmultiple quota management systems may be enabled. In some embodiments,content assets may be deleted by the date the content asset wasrecorded, the size of the content asset, the rating associated with thecontent asset, the sub-user who requested the recording of the contentasset, and other metadata associated with the content asset.

In some embodiments, if users had different quotas for different contentproviders, content may be shared across both but only counted towardsone of the given quotas. For example, if a user subscribed to ContentProvider A and Content Provider B, they may be able to access thecontent from Content Provider A through Content Provider B withoutaffecting the quota associated with Content Provider B. In someembodiments, if the user has different quotas for the different contentproviders, the nDVR application 186 may generate a notificationconfirming a user's request and notifying them of the effect on theirquota prior to completing the action.

In some embodiments, the nDVR system 100 may provide the functionalityto convert recordings to other personal archive mediums, includingstorage on a network-based rights locker or conversion to a physicalmedium (e.g., DVD). For example, when viewing a recorded asset, the nDVRclient 166 may provide a button or hyperlink to an option to convert therecording to a particular archival medium. In some embodiments, usersmay be presented the option to convert the recordings into aweb-accessible user account.

FIG. 9 is a block diagram of a system 900 for providing nDVR services toa legacy system, in accordance with an embodiment of the disclosure.Quadrature amplitude modulation (QAM) is a format by which digitalchannels are encoded and transmitted via cable television providers. Insome embodiments, a server-based virtual client may retrieve theappropriate bit-rate segments, decrypt, and stream out transport streamsto the legacy QAM-based video-on-demand (VoD) platform. In someembodiments, the server-based virtual client may convert the stream tothe format needed for the legacy devices (decryption, concatenation) andstream it to the legacy device.

Legacy systems may include systems that utilize a QAM transmissionprotocol to deliver content to a client device 110. QAM signals may becarried over any variety of communicative links, such as coaxial cables,fiber optic cables, and/or hybrid fiber and coaxial (HFC) cables and maynot be directly compatible with an Internet protocol based system.Certain embodiments, as disclosed herein, may include a system 900 forproviding nDVR service to legacy systems such as those utilizingQAM-based client devices.

In some embodiments, a VoD back office server 905 (e.g., a server-basedvirtual client) may receive a request for content on behalf of aQAM-based client device 110Q. The VoD back office server 905 maytransmit the request to the nDVR server 112. The nDVR server 112 maycommunicate with the nDVR storage array 106 to retrieve the appropriatebit-rate segments. The VoD play-out server 910 may receive the requestfrom the VoD back office server 905 and receive the appropriate bit-ratesegments from the nDVR storage array 106 and decrypt, concatenate,and/or transcode the bit-rate segments to generate a transport stream(e.g., MPEG-2). The generated transport stream may be transmitted to theencryption/QAM server 915 to encrypt the transport stream andtransmission to the requesting QAM-based client device 110Q. In someembodiments, the VoD back office server 905 may present nDVR content tothe QAM-based client device 110Q (e.g., video-on-demand assets in a“Your Recordings” folder).

Within the system 900 for providing nDVR services to legacy devices, oneor more servers may be utilized. For convenience in description, and notby way of limitation, separate servers are described. However, it isunderstood that in some implementations the various functions providedby the servers may be merged, separated, and so forth. Furthermore, theservers may intercommunicate or otherwise interact with one another,such that the conditions of one affect the operation of another.

FIG. 10 is a flow diagram of a method 1000 for providing nDVR servicesto a legacy system such as a QAM-based system. At block 1005, a requestfor content may be received on behalf of a QAM-based client device 110Q.At block 1010, a bit-rate associated with the QAM-based client device110Q may be determined. At block 1015, content segments for therequested content may be retrieved based at least in part on the requestand determined bit-rate. At block 1020, a data stream of content may begenerated based at least in part on the content segments. At block 1025,the generated data stream may be transmitted to the QAM-based client110Q.

At block 1005, a request for content may be received on behalf of aQAM-based client device 110Q. In some embodiments, the VoD back officeserver 905 may receive a request for content on behalf of the QAM-basedclient device 110Q. In some embodiments, the VoD back office server 905may receive the request in response to presenting the user of theQAM-based client device 110Q with nDVR content available for playback.For example, the VoD back office server 905 may retrieve or otherwiseobtain data associated with the user account associated with theQAM-based client device 110Q. The VoD back office server 905 maycommunicate with the nDVR server 112 or the nDVR storage array 106 toidentify any recorded content that may be available to the user andpresent the information to the user. In some embodiments, the presentedinformation may comprise a button or hyperlink that may generate arequest for the content if selected by the user of the QAM-based clientdevice 110Q.

At block 1010, a bit-rate associated with the QAM-based client device110Q may be determined. In some embodiments, the VoD back office server905 may, based at least in part on the request, determine a bit-rateassociated with the QAM-based client device 110Q. In some embodiments,the VoD back office server 905 may determine that the QAM-based clientdevice 110Q may only play content below a pre-determined threshold. Insome embodiments, the request may comprise a bit-rate associated withthe QAM-based client device 110Q. In some embodiments, the VoD backoffice server 905 may determine, based at least in part on the type ofQAM-based client device 110Q, one or more bit-rates associated with theclient device 110Q.

In some embodiments, the VoD back office server 905 may generate arequest for content segments. In some embodiments, the VoD back officeserver 905 may appear to the nDVR as a client device 110. The VoD backoffice server 905 may generate a request for content based at least inpart on the determined bit-rate associated with the QAM-based clientdevice 110Q.

At block 1015, content segments for the requested content may beretrieved or otherwise obtained based at least in part on the requestand determined bit-rate. In some embodiments, the nDVR server 112 mayreceive the request from the VoD back office server 905. The nDVR server112 may, as described above, communicate with the nDVR storage array 106to determine if a user account associated with the QAM-based clientdevice 110Q exists. If the user account exists, the nDVR server 112 maycommunicate with the nDVR storage array 106 to retrieve the requestedcontent segments for the determined bit-rate associated with theQAM-based client device 110Q.

At block 1020, a data stream of content may be generated based at leastin part on the content segments. The VoD play-out server 910 may receivethe content segments from the nDVR storage array 106. In someembodiments, the VoD play-out server 910 may have received anotification based at least in part on the request received by the VoDback office server 905 from the QAM-based client device 110Q. The VoDplay-out server 910 may have initiated generation of a transport streamresponsive to receiving the notification from the VoD back office server905. In some embodiments, the VoD play-out server 910 may receive thecontent segments from the nDVR storage array 106 and generate one ormore transport streams of the requested content. In some embodiments,the VoD play-out server 910 may decrypt the received content segments.The VoD play-out server 910 may concatenate or otherwise assemble thecontent segments.

In some embodiments, the one or more generated data streams may betransmitted to an encryption/QAM server 915. The encryption/QAM server915 may transcode the generated one or more transport streams asnecessary. In some embodiments, the generated transport streams may needto be transcoded to the QAM transmission protocol to be compatible withthe QAM-based client device 110Q.

At block 1025, the one or more generated data streams may be transmittedto the QAM-based client 110Q. In some embodiments, the one or moregenerated data streams may be transmitted to the QAM-based client 110Qover one or more networks 108 as described above.

Similar to the descriptions associated with FIG. 10, the system 900 forproviding nDVR services to QAM-based client devices 110Q may alsoprovide the ability to schedule, record, delete, and otherwise manageassets in the nDVR system.

As will be appreciated by one skilled in the art, the present disclosuremay be embodied as a system, method, or computer program product.Accordingly, the present disclosure may take the form of an entirelyhardware embodiment, an entirely software embodiment (includingfirmware, resident software, micro-code, etc.), or an embodimentcombining hardware and software aspects that may all generally bereferred to herein as a “circuit,” “a module” or “a system.”Furthermore, the present disclosure may take the form of a computerprogram product on a computer-usable storage medium havingcomputer-usable program code embodied in the medium.

Any suitable computer-usable or computer-readable medium may beutilized. The computer-usable or computer-readable medium may be, forexample, but not limited to, an electronic, magnetic, optical,electromagnetic, infrared, or semiconductor system, apparatus, device,or propagation medium. More specific examples (a non-exhaustive list) ofcomputer-readable medium would include the following: an electricalconnection having one or more wires, a portable computer diskette, ahard disk, a random access memory (RAM), a read-only memory (ROM), anerasable programmable read-only memory (EPROM or Flash memory), anoptical fiber, a portable compact disc read-only memory (CD-ROM), anoptical storage device, a transmission media such as those supportingthe Internet or an intranet, or a magnetic storage device. Note that thecomputer-usable or computer-readable medium could even be paper oranother suitable medium upon which the program is printed, because theprogram can be electronically captured, via, for instance, opticalscanning of the paper or other medium, then compiled, interpreted, orotherwise processed in a suitable manner, if necessary, and then storedin a computer memory. In the context of this document, a computer-usableor computer-readable medium may be any medium that can contain, store,communicate, propagate, or transport the program for use by or inconnection with the instruction execution system, apparatus, or device.The computer-usable medium may include a propagated data signal with thecomputer-usable program code embodied therewith, either in baseband oras part of a carrier wave. The computer-usable program code may betransmitted using any appropriate medium including, but not limited to,the Internet, wireline, optical fiber cable, RF, etc.

Computer program code for carrying out operations of the presentdisclosure may be written in an object-oriented programming languagesuch as Java, Smalltalk, C++, or the like. However, the computer programcode for carrying out operations of the present disclosure may also bewritten in conventional procedural programming languages, such as the“C” programming language or similar programming languages. The programcode may execute entirely on the user's computer, partly on the user'scomputer, as a stand-alone software package, partly on the user'scomputer and partly on a remote computer or entirely on the remotecomputer or server. In the latter scenario, the remote computer may beconnected to the user's computer through a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider).

These computer program instructions may also be stored in acomputer-readable memory that can direct a computer or otherprogrammable data processing apparatus to function in a particularmanner, such that the instructions stored in the computer-readablememory produce an article of manufacture including instruction meanswhich implement the function/act specified in the flow diagram and/orblock diagram block or blocks.

The computer program instructions may also be loaded onto a computer orother programmable data processing apparatus to cause a series ofoperational steps to be performed on the computer or other programmableapparatus to produce a computer-implemented process such that theinstructions which execute on the computer or other programmableapparatus provide steps for implementing the functions/acts specified inthe flow diagram and/or block diagram block or blocks.

Certain aspects of the disclosure are described above with reference toblock and flow diagrams of systems, methods, apparatus, and/or computerprogram products according to example embodiments. It will be understoodthat one or more blocks of the block diagrams and flow diagrams, andcombinations of blocks in the block diagrams and the flow diagrams,respectively, can be implemented by computer-executable programinstructions. Likewise, some blocks of the block diagrams and flowdiagrams may not necessarily need to be performed in the orderpresented, or may not necessarily need to be performed at all, accordingto some embodiments.

These computer-executable program instructions may be loaded onto aspecial-purpose computer or other particular machine, a processor, orother programmable data processing apparatus to produce a particularmachine, such that the instructions that execute on the computer,processor, or other programmable data processing apparatus create meansfor implementing one or more functions specified in the flow diagramblock or blocks. These computer program instructions may also be storedin a computer-readable memory that can direct a computer or otherprogrammable data processing apparatus to function in a particularmanner, such that the instructions stored in the computer-readablememory produce an article of manufacture including instruction meansthat implement one or more functions specified in the flow diagram blockor blocks. As an example, certain embodiments may provide for a computerprogram product, comprising a computer-usable medium having acomputer-readable program code or program instructions embodied therein,said computer-readable program code adapted to be executed to implementone or more functions specified in the flow diagram block or blocks. Thecomputer program instructions may also be loaded onto a computer orother programmable data processing apparatus to cause a series ofoperational elements or steps to be performed on the computer or otherprogrammable apparatus to produce a computer-implemented process suchthat the instructions that execute on the computer or other programmableapparatus provide elements or steps for implementing the functionsspecified in the flow diagram block or blocks.

Accordingly, blocks of the block diagrams and flow diagrams supportcombinations of means for performing the specified functions,combinations of elements or steps for performing the specified functionsand program instruction means for performing the specified functions. Itwill also be understood that each block of the block diagrams and flowdiagrams, and combinations of blocks in the block diagrams and flowdiagrams, can be implemented by special-purpose, hardware-based computersystems that perform the specified functions, elements or steps, orcombinations of special-purpose hardware and computer instructions.

Conditional language, such as, among others, “can,” “could,” “might,” or“may,” unless specifically stated otherwise, or otherwise understoodwithin the context as used, is generally intended to convey that certainembodiments could include, while other embodiments do not include,certain features, elements, and/or operations. Thus, such conditionallanguage is not generally intended to imply that features, elements,and/or operations are in any way required for one or more embodiments orthat one or more embodiments necessarily include logic for deciding,with or without user input or prompting, whether these features,elements, and/or operations are included or are to be performed in anyparticular embodiment.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the disclosure.As used herein, the singular forms “a”, “an” and “the” are intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. It will be further understood that the terms “comprises”and/or “comprising,” when used in this specification, specify thepresence of stated features, integers, steps, operations, elements,and/or components, but do not preclude the presence or addition of oneor more other features, integers, steps, operations, elements,components, and/or groups thereof.

The corresponding structures, materials, acts, and equivalents of allmeans or step plus function elements in the claims below are intended toinclude any structure, material, or act for performing the function incombination with other claimed elements as specifically claimed. Thedescription of the present disclosure has been presented for purposes ofillustration and description, but is not intended to be exhaustive orlimited to the disclosure in the form disclosed. Many modifications andvariations will be apparent to those of ordinary skill in the artwithout departing from the scope and spirit of the disclosure. Theembodiment was chosen and described in order to best explain theprinciples of the disclosure and the practical application, and toenable others of ordinary skill in the art to understand the disclosurefor various embodiments with various modifications as are suited to theparticular use contemplated.

Many modifications and other embodiments of the disclosure set forthherein will be apparent having the benefit of the teachings presented inthe foregoing descriptions and the associated drawings. Therefore, it isto be understood that the disclosure is not to be limited to thespecific embodiments disclosed and that modifications and otherembodiments are intended to be included within the scope of the appendedclaims. Although specific terms are employed herein, they are used in ageneric and descriptive sense only and not for purposes of limitation.

What is claimed is:
 1. A computer-implemented method, comprising:generating, by a network-based digital video recording (nDVR) systemcomprising one or more computers, a first time-shift buffer and a secondtime-shift buffer; receiving, by the nDVR system from a user via aclient device, a first group of content segments associated with a firstlive content in the first time-shift buffer; receiving, by the nDVRsystem, a first request to record the first live content; transforming,by the nDVR system, the first live content to a first recorded contentasset based at least in part on the first group of content segments;receiving, by the nDVR system, a second group of content segmentsassociated with second live content in the second time-shift buffer;receiving, by the nDVR system, while continuing to receive the firstgroup of content segments, a second request to record the second livecontent; and transforming, by the nDVR system, the second live contentto a second recorded content asset based at let in part on the secondgroup of content segments.
 2. The computer-implemented method of claim1, further comprising: generating, by the nDVR system, a first manifestfile associated with the first recorded content asset; generating, bythe nDVR system, a second manifest file associated with the secondrecorded content asset; storing, by the nDVR system, the first manifestfile in a directory associated with the user; and storing, by the nDVRsystem, the second manifest file in the directory associated with theuser.
 3. The computer-implemented method of claim 1, wherein the firsttime-shift buffer is a user-based rolling recording for a predeterminedduration.
 4. The computer-implemented method of claim 1, wherein thesecond time-shift buffer is a user-based rolling recording for apredetermined duration.
 5. The computer-implemented method of claim 1,wherein a duration associated with the first time-shift buffer is set asa subscription option selected by the user.
 6. The computer-implementedmethod of claim 1, wherein a duration associated with the secondtime-shift buffer is set as a subscription option selected by the user.7. The computer-implemented method of claim 1, wherein the first contentsegments are retrieved from the first time-shift buffer and stored in adirectory associated with the user.
 8. The computer-implemented methodof claim 1, wherein the second content segments are retrieved from thesecond time-shift buffer and stored in a directory associated with theuser.
 9. A system comprising: at least one memory storingcomputer-executable instructions; and at least one processor, whereinthe at least one processor is configured to access the at least onememory and to execute the computer-executable instructions to: generatea first time-shift buffer and a second time-shift buffer; receive, froma client device on behalf of a user, a first group of content segmentsassociated with a first live content in the first time-shift buffer;receive a first request to record the first live content; transform thefirst live content to a first recorded content asset based at least inpart on the first group of content segments; receive, from the clientdevice on behalf of the user, a second group of content segmentsassociated with second live content in the second time-shift buffer;receive, while continuing to receive the first group of contentsegments, a second request to record the second live content; andtransform the second live content to a second recorded content assetbased at let in part on the second group of content segments.
 10. Thesystem of claim 9, wherein the at least one processor is furtherconfigured to execute the computer-executable instructions to: generatea first manifest file associated with the first recorded content asset;generate a second manifest file associated with the second recordedcontent asset; store the first manifest file in a directory associatedwith the user; and store the second manifest file in the directoryassociated with the user.
 11. The system of claim 9, wherein the firsttime-shift buffer is a user-based rolling recording for a predeterminedduration.
 12. The system of claim 9, wherein the second time-shiftbuffer is a user-based rolling recording for a predetermined duration.13. The system of claim 9, wherein a duration associated with the firsttime-shift buffer is set as a subscription option selected by the user.14. The system of claim 9, wherein a duration associated with the secondtime-shift buffer is set as a subscription option selected by the user.15. The system of claim 9, wherein the first content segments areretrieved from the first time-shift buffer and stored in a directoryassociated with the user.
 16. The system of claim 9, wherein the secondcontent segments are retrieved from the second time-shift buffer andstored in a directory associated with the user.
 17. Acomputer-implemented method, comprising: generating, by a network-baseddigital video recording (nDVR) system comprising one or more computers,a first time-shift buffer and a second time-shift buffer; receiving, bythe nDVR system from a user via a client device, a first group ofcontent segments associated with a first live content in the firsttime-shift buffer; receiving, by the nDVR system, a first request torecord the first live content; transforming, by the nDVR system, thefirst live content to a first recorded content asset based at least inpart on the first group of content segments; receiving, by the nDVRsystem, a second group of content segments associated with second livecontent in the second time-shift buffer; receiving, by the nDVR system,while continuing to receive the first group of content segments, asecond request to record the second live content; transforming, by thenDVR system, the second live content to a second recorded content assetbased at let in part on the second group of content segments;generating, by the nDVR system, a first manifest file associated withthe first recorded content asset; generating, by the nDVR system, asecond manifest file associated with the second recorded content asset;storing, by the nDVR system, the first manifest file in a directoryassociated with the user; and storing, by the nDVR system, the secondmanifest file in the directory associated with the user.
 18. Thecomputer-implemented method of claim 17, wherein at least one of thefirst time-shift buffer and the second time-shift buffer is a user-basedrolling recording for a predetermined duration.
 19. Thecomputer-implemented method of claim 17, wherein a duration associatedwith at least one of the first time-shift buffer and the secondtime-shift buffer is set as a subscription option selected by the user.20. The computer-implemented method of claim 17, wherein the firstcontent segments are retrieved from the first time-shift buffer and thesecond content segments are retrieved from the second time-shift buffer.